lteiot 2.2.0
lteiot


LTE IoT Click

LTE IoT Click demo application is developed using the NECTO Studio, ensuring compatibility with mikroSDK's open-source libraries and tools. Designed for plug-and-play implementation and testing, the demo is fully compatible with all development, starter, and mikromedia boards featuring a mikroBUS™ socket.


Click Library

  • Author : MikroE Team
  • Date : Apr 2020.
  • Type : UART GSM/IOT type

Software Support

Example Description

This example reads and processes data from LTE IoT Click.

Example Libraries

  • MikroSDK.Board
  • MikroSDK.Log
  • Click.LteIot

Example Key Functions

Application Init

Initializes driver and wake-up module and sets default configuration for connecting device to network.

void application_init ( void )
{
log_cfg_t log_cfg;
lteiot_cfg_t lteiot_cfg;
LOG_MAP_USB_UART( log_cfg );
log_init( &logger, &log_cfg );
log_info( &logger, " Application Init " );
Delay_ms ( 1000 );
// Click initialization.
lteiot_cfg_setup( &lteiot_cfg );
LTEIOT_MAP_MIKROBUS( lteiot_cfg, MIKROBUS_1 );
err_t init_flag = lteiot_init( &lteiot, &lteiot_cfg );
if ( init_flag == UART_ERROR )
{
log_error( &logger, " Application Init Error. " );
log_info( &logger, " Please, run program again... " );
for ( ; ; );
}
log_info( &logger, " Power on device... " );
lteiot_power_on( &lteiot );
// dummy read
lteiot_process( );
lteiot_clear_app_buf( );
// AT
app_error_flag = lteiot_rsp_check( );
lteiot_error_check( app_error_flag );
Delay_ms ( 500 );
// ATI - product information
app_error_flag = lteiot_rsp_check( );
lteiot_error_check( app_error_flag );
Delay_ms ( 500 );
// CGMR - firmware version
app_error_flag = lteiot_rsp_check( );
lteiot_error_check( app_error_flag );
Delay_ms ( 500 );
// COPS - deregister from network
app_error_flag = lteiot_rsp_check( );
lteiot_error_check( app_error_flag );
Delay_ms ( 500 );
// CGDCONT - set sim apn
app_error_flag = lteiot_rsp_check( );
lteiot_error_check( app_error_flag );
Delay_ms ( 500 );
// CFUN - full funtionality
app_error_flag = lteiot_rsp_check( );
lteiot_error_check( app_error_flag );
Delay_ms ( 500 );
// COPS - automatic mode
app_error_flag = lteiot_rsp_check( );
lteiot_error_check( app_error_flag );
Delay_ms ( 1000 );
Delay_ms ( 1000 );
// CEREG - network registration status
app_error_flag = lteiot_rsp_check( );
lteiot_error_check( app_error_flag );
Delay_ms ( 500 );
// CIMI - request IMSI
app_error_flag = lteiot_rsp_check( );
lteiot_error_check( app_error_flag );
Delay_ms ( 500 );
app_buf_len = 0;
app_buf_cnt = 0;
app_connection_status = WAIT_FOR_CONNECTION;
log_info( &logger, " Application Task " );
Delay_ms ( 1000 );
Delay_ms ( 1000 );
Delay_ms ( 1000 );
Delay_ms ( 1000 );
Delay_ms ( 1000 );
}
#define LTEIOT_CMD_CIMI
Definition lteiot.h:106
#define LTEIOT_CMD_COPS
Definition lteiot.h:110
#define LTEIOT_CMD_CFUN
Definition lteiot.h:102
#define LTEIOT_CMD_CEREG
Definition lteiot.h:104
#define LTEIOT_CMD_CGMR
Definition lteiot.h:100
#define LTEIOT_CMD_ATI
Definition lteiot.h:99
#define LTEIOT_CMD_AT
Definition lteiot.h:98
#define LTEIOT_MAP_MIKROBUS(cfg, mikrobus)
Definition lteiot.h:66
void lteiot_set_sim_apn(lteiot_t *ctx, char *sim_apn)
Set sim card APN.
void lteiot_send_cmd_with_parameter(lteiot_t *ctx, char *at_cmd_buf, char *param_buf)
Send command function with parameter.
void application_init(void)
Definition main.c:124
#define SIM_APN
Definition main.c:49
#define WAIT_FOR_CONNECTION
Definition main.c:55

Application Task

Waits for device to connect to network and then sends SMS to selected phone number.

void application_task ( void )
{
if ( app_connection_status == WAIT_FOR_CONNECTION )
{
// CGATT - request IMSI
app_error_flag = lteiot_rsp_check( );
lteiot_error_check( app_error_flag );
Delay_ms ( 500 );
// CEREG - network registration status
app_error_flag = lteiot_rsp_check( );
lteiot_error_check( app_error_flag );
Delay_ms ( 500 );
// CSQ - signal quality
app_error_flag = lteiot_rsp_check( );
lteiot_error_check( app_error_flag );
Delay_ms ( 1000 );
Delay_ms ( 1000 );
Delay_ms ( 1000 );
Delay_ms ( 1000 );
Delay_ms ( 1000 );
}
else
{
log_info( &logger, "CONNECTED TO NETWORK" );
// SMS message format - text mode
lteiot_send_cmd_with_parameter( &lteiot, "AT+CMGF", "1" );
app_error_flag = lteiot_rsp_check( );
lteiot_error_check( app_error_flag );
Delay_ms ( 1000 );
Delay_ms ( 1000 );
Delay_ms ( 1000 );
for( ; ; )
{
log_printf( &logger, "> Sending message to phone number...\r\n" );
app_error_flag = lteiot_rsp_check( );
lteiot_error_check( app_error_flag );
Delay_ms ( 1000 );
Delay_ms ( 1000 );
Delay_ms ( 1000 );
Delay_ms ( 1000 );
Delay_ms ( 1000 );
Delay_ms ( 1000 );
Delay_ms ( 1000 );
Delay_ms ( 1000 );
Delay_ms ( 1000 );
Delay_ms ( 1000 );
Delay_ms ( 1000 );
Delay_ms ( 1000 );
Delay_ms ( 1000 );
Delay_ms ( 1000 );
Delay_ms ( 1000 );
Delay_ms ( 1000 );
Delay_ms ( 1000 );
Delay_ms ( 1000 );
Delay_ms ( 1000 );
Delay_ms ( 1000 );
Delay_ms ( 1000 );
Delay_ms ( 1000 );
Delay_ms ( 1000 );
Delay_ms ( 1000 );
Delay_ms ( 1000 );
Delay_ms ( 1000 );
Delay_ms ( 1000 );
Delay_ms ( 1000 );
Delay_ms ( 1000 );
Delay_ms ( 1000 );
}
}
}
#define LTEIOT_CMD_CGATT
Definition lteiot.h:107
#define LTEIOT_CMD_CSQ
Definition lteiot.h:108
void lteiot_send_text_message(lteiot_t *ctx, char *phone_number, char *message_context)
LTE IoT send text message.
void lteiot_send_cmd_check(lteiot_t *ctx, char *at_cmd_buf)
Check the sent command.
void application_task(void)
Definition main.c:228
#define PHONE_NUMBER_TO_MESSAGE
Definition main.c:50
#define MESSAGE_CONTENT
Definition main.c:51

Note

In order for the example to work, user needs to set the phone number and sim apn to which he wants to send an SMS Enter valid data for the following macros: SIM_APN and PHONE_NUMBER_TO_MESSAGE.

E.g.

  • SIM_APN "vipmobile"
  • PHONE_NUMBER_TO_MESSAGE "999999999"

Application Output

This Click board can be interfaced and monitored in two ways:

  • Application Output - Use the "Application Output" window in Debug mode for real-time data monitoring. Set it up properly by following this tutorial.
  • UART Terminal - Monitor data via the UART Terminal using a USB to UART converter. For detailed instructions, check out this tutorial.

Additional Notes and Information

The complete application code and a ready-to-use project are available through the NECTO Studio Package Manager for direct installation in the NECTO Studio. The application code can also be found on the MIKROE GitHub account.